#include <iostream>
using std::cout;
using std::endl;

void test0(){
    int * p = (int*)malloc(sizeof(int));
    *p = 100;
    free(p);
    p = nullptr;

    int * p1 = new int();
    cout << *p1 << endl;
    /* free(p1);//这是一个风险写法 */
    delete p1;
    p1 = nullptr;//把p1设置为空指针，安全回收操作

    int * p2 = new int(100);
    cout << *p2 << endl;
    delete p2;
    p2 = nullptr;//把p2设置为空指针，安全回收操作
    
    //最后这个（）一定要带——编程规范
    //如果不带小括号，代表没有进行初始化，存在脏数据
    //这里是编译器进行了优化，但是为了确保代码的通用性，
    //一定要带小括号
    int * p3 = new int[5]();
    for(int i = 0; i < 5; ++i){
         p3[i] = i;
    }
    for(int i = 0; i < 5; ++i){
        cout << p3[i] << endl;
    }
    //表示回收的是数组空间
    delete [] p3;
    p3 = nullptr;//把p3设置为空指针，安全回收操作
}

int main(void){
    test0();
    return 0;
}
